#ifndef __S_LIST_H__
#define __S_LIST_H__

// 引用头文件
#include "head.h"

// 用户数据结构体
typedef struct U_data
{
    char name[16];     // 用户名
    char passwd[64];   // 用户密码
    int grade;         // 用户等级
    int value;         // 余额
    F_data ticket[10]; // 存储航班信息的数组
} U_data;

// 用户数据节点 - 单链表
typedef struct U_node
{
    U_data data;
    struct U_node *next;
} U_node;

typedef struct U_list
{
    U_node *next;
} U_list;

// 声明函数
// 单链表的创建
U_list* S_List_init();

// 单链表的插入
void S_List_insert(U_list* list, U_data data, int pos);

// 单链表的删除
void S_List_delete(U_list *list, int pos);

// 单链表的查找
U_node* S_List_find_name(U_list* list, char* name);

// 单链表的修改
int S_list_up_data(U_list* list, U_node * node);
//增加金额
int S_list_add_recharge(U_list* list, U_node * node,int recharge);
//通过名字查找并删除
int S_List_name_delete(U_list *list,char *name);
//找到名字返回整个 结构体
U_data S_List_find_name_data(U_list *list, char *name,int grade);

//查找用户表 成员 ticket[] 用户票的下标
int S_List_find_id(U_list *list, int id,int i);
//增加用户航班
int S_list_add_id(U_list* list, U_node * node,int id,int num,int flight_fare);
// 单链表的修改密码
int S_list_up_data_passwd(U_list* list, U_node * node,char *passsword);
// 单链表的遍历
void S_List_print(U_list* list);

// 单链表的清空
void S_List_clear(U_list* list);

// 单链表的合并
U_list* S_List_merge(U_list* list1, U_list* list2);

// 单链表的销毁
void S_List_free(U_list **list);

// 向文件写入用户信息
void S_List_File_print(U_list *list, const char *file_name);

// 从文件读取用户信息
void S_List_File_scanf(U_list *list, const char *file_name);

#endif // __S_LIST_H__
